// vite.config.ts
import { defineConfig } from "file:///F:/www/vue-admin/node_modules/.pnpm/vite@5.3.2_@types+node@20.14.9_sass@1.77.6/node_modules/vite/dist/node/index.js";

// vite/plugins/index.ts
import vue from "file:///F:/www/vue-admin/node_modules/.pnpm/@vitejs+plugin-vue@5.0.5_vite@5.3.2_@types+node@20.14.9_sass@1.77.6__vue@3.4.31_typescript@5.5.3_/node_modules/@vitejs/plugin-vue/dist/index.mjs";

// vite/plugins/unplugin.ts
import process from "node:process";
import path from "node:path";
import Icons from "file:///F:/www/vue-admin/node_modules/.pnpm/unplugin-icons@0.19.0_@vue+compiler-sfc@3.4.31_vue-template-compiler@2.7.16/node_modules/unplugin-icons/dist/vite.js";
import IconsResolver from "file:///F:/www/vue-admin/node_modules/.pnpm/unplugin-icons@0.19.0_@vue+compiler-sfc@3.4.31_vue-template-compiler@2.7.16/node_modules/unplugin-icons/dist/resolver.js";
import Components from "file:///F:/www/vue-admin/node_modules/.pnpm/unplugin-vue-components@0.27.2_@babel+parser@7.24.7_rollup@4.18.0_vue@3.4.31_typescript@5.5.3_/node_modules/unplugin-vue-components/dist/vite.js";
import { FileSystemIconLoader } from "file:///F:/www/vue-admin/node_modules/.pnpm/unplugin-icons@0.19.0_@vue+compiler-sfc@3.4.31_vue-template-compiler@2.7.16/node_modules/unplugin-icons/dist/loaders.js";
import { createSvgIconsPlugin } from "file:///F:/www/vue-admin/node_modules/.pnpm/vite-plugin-svg-icons@2.0.1_vite@5.3.2_@types+node@20.14.9_sass@1.77.6_/node_modules/vite-plugin-svg-icons/dist/index.mjs";
import { PrimeVueResolver } from "file:///F:/www/vue-admin/node_modules/.pnpm/@primevue+auto-import-resolver@4.0.0/node_modules/@primevue/auto-import-resolver/index.mjs";
function setupUnplugin() {
  const VITE_ICON_PREFIX = "icon";
  const VITE_ICON_LOCAL_PREFIX = "local-icon";
  const localIconPath = path.join(process.cwd(), "src/assets/svg-icon");
  const collectionName = VITE_ICON_LOCAL_PREFIX.replace(`${VITE_ICON_PREFIX}-`, "");
  const plugins = [
    Icons({
      compiler: "vue3",
      customCollections: {
        [collectionName]: FileSystemIconLoader(
          localIconPath,
          (svg) => svg.replace(/^<svg\s/, '<svg width="1em" height="1em" ')
        )
      },
      scale: 1,
      defaultClass: "inline-block"
    }),
    Components({
      dts: "src/types/components.d.ts",
      dirs: ["src/components/**"],
      types: [{ from: "vue-router", names: ["RouterLink", "RouterView"] }],
      resolvers: [
        PrimeVueResolver({
          components: {}
        }),
        IconsResolver({ customCollections: [collectionName], prefix: VITE_ICON_PREFIX })
      ]
    }),
    createSvgIconsPlugin({
      iconDirs: [localIconPath],
      symbolId: `${VITE_ICON_LOCAL_PREFIX}-[dir]-[name]`,
      inject: "body-last",
      customDomId: "__SVG_ICON_LOCAL__"
    })
  ];
  return plugins;
}

// vite/plugins/index.ts
import VueDevtools from "file:///F:/www/vue-admin/node_modules/.pnpm/vite-plugin-vue-devtools@7.3.5_rollup@4.18.0_vite@5.3.2_@types+node@20.14.9_sass@1.77.6__vue@3.4.31_typescript@5.5.3_/node_modules/vite-plugin-vue-devtools/dist/vite.mjs";

// vite/plugins/unocss.ts
import process2 from "node:process";
import path2 from "node:path";
import unocss from "file:///F:/www/vue-admin/node_modules/.pnpm/@unocss+vite@0.61.0_rollup@4.18.0_vite@5.3.2_@types+node@20.14.9_sass@1.77.6_/node_modules/@unocss/vite/dist/index.mjs";
import presetIcons from "file:///F:/www/vue-admin/node_modules/.pnpm/@unocss+preset-icons@0.61.0/node_modules/@unocss/preset-icons/dist/index.mjs";
import { FileSystemIconLoader as FileSystemIconLoader2 } from "file:///F:/www/vue-admin/node_modules/.pnpm/@iconify+utils@2.1.25/node_modules/@iconify/utils/lib/loader/node-loaders.mjs";
function setupUnoCss() {
  const VITE_ICON_PREFIX = "icon";
  const VITE_ICON_LOCAL_PREFIX = "local-icon";
  const localIconPath = path2.join(process2.cwd(), "src/assets/svg-icon");
  const collectionName = VITE_ICON_LOCAL_PREFIX.replace(`${VITE_ICON_PREFIX}-`, "");
  return unocss({
    presets: [
      presetIcons({
        prefix: `${VITE_ICON_PREFIX}-`,
        scale: 1,
        extraProperties: {
          display: "inline-block"
        },
        collections: {
          [collectionName]: FileSystemIconLoader2(
            localIconPath,
            (svg) => svg.replace(/^<svg\s/, '<svg width="1em" height="1em" ')
          )
        },
        warn: true
      })
    ]
  });
}

// vite/plugins/index.ts
function createPlugins() {
  const plugins = [
    vue(),
    VueDevtools(),
    setupUnoCss(),
    ...setupUnplugin()
  ];
  return plugins;
}

// vite.config.ts
import { URL, fileURLToPath } from "node:url";
var __vite_injected_original_import_meta_url = "file:///F:/www/vue-admin/vite.config.ts";
var vite_config_default = defineConfig(() => {
  return {
    resolve: {
      alias: {
        "~": fileURLToPath(new URL("./", __vite_injected_original_import_meta_url)),
        "@": fileURLToPath(new URL("./src", __vite_injected_original_import_meta_url)),
        "@pv": fileURLToPath(new URL("./packages/primevue/src", __vite_injected_original_import_meta_url)),
        vue: "vue/dist/vue.esm-bundler.js"
      }
    },
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: `@use "./src/assets/scss/global.scss" as *;`
        }
      },
      modules: {
        //是对css模块化的默认行为进行覆盖
        // localConvention: "camelcase",//修改生成的配置对象的key的展示形式(驼峰还是中划线形式)
        // scopeBehaviour:'local',//配置当前的模块化行为是模块化还是全局化（有hash就是开启了模块化的一个标志，因为他可以保证产生不同的hash值来控制样式类名不被覆盖）
        //generateScopedName: "[name]_[local]_[hash:5]" //github.com/webpack/loader-utils#interpolatename
        // generateScopedName:( name,filename,css)=>{
        //   //配置成函数以后，返回值就决定了他最终显示的类型
        //   //return '123'//所有类名都变为123
        //   //name：代表的是你此刻css文件中的类名
        //   //fileName：是你当前css文件的绝对路径
        //   //css：是你当前样式
        //   console.log(name,filename,css)//输出在node
        //   return `${name}_${Math.random().toString(36).substr(3,8)}`
        // },
        // hashPrefix:'hello'//将hello打散放在hash中
        // globalModulePaths: ['./componentB.moduule.css'], // 代表你不想参与到css模块化的路径
      }
    },
    plugins: createPlugins(),
    build: {
      manifest: "manifest-admin.json",
      reportCompressedSize: false,
      sourcemap: false,
      commonjsOptions: {
        ignoreTryCatch: false
      },
      rollupOptions: {
        output: {
          // manualChunks(id) {
          //   if (id.includes('node_modules')) {
          //     if (id.includes('vue3-sfc-loader')) {
          //       return 'vue3-sfc-loader';
          //     } else if (id.includes('wang-editor')) {
          //       return 'wang-editor';
          //     } else if (id.includes('json-editor-vue')) {
          //       return 'json-editor-vue';
          //     } else if (id.includes('@wangeditor')) {
          //       return 'wangeditor';
          //     } else if (id.includes('xgplayer')) {
          //       return 'xgplayer';
          //     }
          //     return 'vendor';
          //   }
          // }
        }
      }
    }
    // ,
    // esbuild: {
    //   drop: configEnv.command === 'build' ? ['console', 'debugger'] : []
    // }
  };
});
export {
  vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAidml0ZS9wbHVnaW5zL2luZGV4LnRzIiwgInZpdGUvcGx1Z2lucy91bnBsdWdpbi50cyIsICJ2aXRlL3BsdWdpbnMvdW5vY3NzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRjpcXFxcd3d3XFxcXHZ1ZS1hZG1pblwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRjpcXFxcd3d3XFxcXHZ1ZS1hZG1pblxcXFx2aXRlLmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRjovd3d3L3Z1ZS1hZG1pbi92aXRlLmNvbmZpZy50c1wiO2ltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gJ3ZpdGUnXG5pbXBvcnQgY3JlYXRlUGx1Z2lucyBmcm9tICcuL3ZpdGUvcGx1Z2lucydcbmltcG9ydCB7IFVSTCwgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcblxuLy8gaHR0cHM6Ly92aXRlanMuZGV2L2NvbmZpZy9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZygoKT0+e1xuICByZXR1cm4ge1xuICAgIHJlc29sdmU6IHtcbiAgICAgIGFsaWFzOiB7XG4gICAgICAgICd+JzogZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuLycsIGltcG9ydC5tZXRhLnVybCkpLFxuICAgICAgICAnQCc6IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi9zcmMnLCBpbXBvcnQubWV0YS51cmwpKSxcbiAgICAgICAgJ0Bwdic6IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi9wYWNrYWdlcy9wcmltZXZ1ZS9zcmMnLCBpbXBvcnQubWV0YS51cmwpKSxcbiAgICAgICAgdnVlOiAndnVlL2Rpc3QvdnVlLmVzbS1idW5kbGVyLmpzJ1xuICAgICAgfVxuICAgIH0sXG4gICAgY3NzOiB7XG4gICAgICBwcmVwcm9jZXNzb3JPcHRpb25zOiB7XG4gICAgICAgIHNjc3M6IHtcbiAgICAgICAgICBhZGRpdGlvbmFsRGF0YTogYEB1c2UgXCIuL3NyYy9hc3NldHMvc2Nzcy9nbG9iYWwuc2Nzc1wiIGFzICo7YFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbW9kdWxlczp7IC8vXHU2NjJGXHU1QkY5Y3NzXHU2QTIxXHU1NzU3XHU1MzE2XHU3Njg0XHU5RUQ4XHU4QkE0XHU4ODRDXHU0RTNBXHU4RkRCXHU4ODRDXHU4OTg2XHU3NkQ2XG4gICAgICAgIC8vIGxvY2FsQ29udmVudGlvbjogXCJjYW1lbGNhc2VcIiwvL1x1NEZFRVx1NjUzOVx1NzUxRlx1NjIxMFx1NzY4NFx1OTE0RFx1N0Y2RVx1NUJGOVx1OEM2MVx1NzY4NGtleVx1NzY4NFx1NUM1NVx1NzkzQVx1NUY2Mlx1NUYwRihcdTlBN0NcdTVDRjBcdThGRDhcdTY2MkZcdTRFMkRcdTUyMTJcdTdFQkZcdTVGNjJcdTVGMEYpXG4gICAgICAgIC8vIHNjb3BlQmVoYXZpb3VyOidsb2NhbCcsLy9cdTkxNERcdTdGNkVcdTVGNTNcdTUyNERcdTc2ODRcdTZBMjFcdTU3NTdcdTUzMTZcdTg4NENcdTRFM0FcdTY2MkZcdTZBMjFcdTU3NTdcdTUzMTZcdThGRDhcdTY2MkZcdTUxNjhcdTVDNDBcdTUzMTZcdUZGMDhcdTY3MDloYXNoXHU1QzMxXHU2NjJGXHU1RjAwXHU1NDJGXHU0RTg2XHU2QTIxXHU1NzU3XHU1MzE2XHU3Njg0XHU0RTAwXHU0RTJBXHU2ODA3XHU1RkQ3XHVGRjBDXHU1NkUwXHU0RTNBXHU0RUQ2XHU1M0VGXHU0RUU1XHU0RkREXHU4QkMxXHU0RUE3XHU3NTFGXHU0RTBEXHU1NDBDXHU3Njg0aGFzaFx1NTAzQ1x1Njc2NVx1NjNBN1x1NTIzNlx1NjgzN1x1NUYwRlx1N0M3Qlx1NTQwRFx1NEUwRFx1ODhBQlx1ODk4Nlx1NzZENlx1RkYwOVxuICAgICAgICAvL2dlbmVyYXRlU2NvcGVkTmFtZTogXCJbbmFtZV1fW2xvY2FsXV9baGFzaDo1XVwiIC8vZ2l0aHViLmNvbS93ZWJwYWNrL2xvYWRlci11dGlscyNpbnRlcnBvbGF0ZW5hbWVcbiAgICAgICAgLy8gZ2VuZXJhdGVTY29wZWROYW1lOiggbmFtZSxmaWxlbmFtZSxjc3MpPT57XG4gICAgICAgIC8vICAgLy9cdTkxNERcdTdGNkVcdTYyMTBcdTUxRkRcdTY1NzBcdTRFRTVcdTU0MEVcdUZGMENcdThGRDRcdTU2REVcdTUwM0NcdTVDMzFcdTUxQjNcdTVCOUFcdTRFODZcdTRFRDZcdTY3MDBcdTdFQzhcdTY2M0VcdTc5M0FcdTc2ODRcdTdDN0JcdTU3OEJcbiAgICAgICAgLy8gICAvL3JldHVybiAnMTIzJy8vXHU2MjQwXHU2NzA5XHU3QzdCXHU1NDBEXHU5MEZEXHU1M0Q4XHU0RTNBMTIzXG4gICAgICAgIC8vICAgLy9uYW1lXHVGRjFBXHU0RUUzXHU4ODY4XHU3Njg0XHU2NjJGXHU0RjYwXHU2QjY0XHU1MjNCY3NzXHU2NTg3XHU0RUY2XHU0RTJEXHU3Njg0XHU3QzdCXHU1NDBEXG4gICAgICAgIC8vICAgLy9maWxlTmFtZVx1RkYxQVx1NjYyRlx1NEY2MFx1NUY1M1x1NTI0RGNzc1x1NjU4N1x1NEVGNlx1NzY4NFx1N0VERFx1NUJGOVx1OERFRlx1NUY4NFxuICAgICAgICAvLyAgIC8vY3NzXHVGRjFBXHU2NjJGXHU0RjYwXHU1RjUzXHU1MjREXHU2ODM3XHU1RjBGXG4gICAgICAgIC8vICAgY29uc29sZS5sb2cobmFtZSxmaWxlbmFtZSxjc3MpLy9cdThGOTNcdTUxRkFcdTU3Mjhub2RlXG4gICAgICAgIC8vICAgcmV0dXJuIGAke25hbWV9XyR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDMsOCl9YFxuICAgICAgICAvLyB9LFxuICAgICAgICAvLyBoYXNoUHJlZml4OidoZWxsbycvL1x1NUMwNmhlbGxvXHU2MjUzXHU2NTYzXHU2NTNFXHU1NzI4aGFzaFx1NEUyRFxuICAgICAgICAvLyBnbG9iYWxNb2R1bGVQYXRoczogWycuL2NvbXBvbmVudEIubW9kdXVsZS5jc3MnXSwgLy8gXHU0RUUzXHU4ODY4XHU0RjYwXHU0RTBEXHU2MEYzXHU1M0MyXHU0RTBFXHU1MjMwY3NzXHU2QTIxXHU1NzU3XHU1MzE2XHU3Njg0XHU4REVGXHU1Rjg0XG4gICAgICB9XG4gICAgfSxcbiAgICBwbHVnaW5zOiBjcmVhdGVQbHVnaW5zKCksXG4gICAgYnVpbGQ6IHtcbiAgICAgIG1hbmlmZXN0OiAnbWFuaWZlc3QtYWRtaW4uanNvbicsXG4gICAgICByZXBvcnRDb21wcmVzc2VkU2l6ZTogZmFsc2UsXG4gICAgICBzb3VyY2VtYXA6IGZhbHNlLFxuICAgICAgY29tbW9uanNPcHRpb25zOiB7XG4gICAgICAgIGlnbm9yZVRyeUNhdGNoOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIHJvbGx1cE9wdGlvbnM6IHtcbiAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgLy8gbWFudWFsQ2h1bmtzKGlkKSB7XG4gICAgICAgICAgLy8gICBpZiAoaWQuaW5jbHVkZXMoJ25vZGVfbW9kdWxlcycpKSB7XG4gICAgICAgICAgLy8gICAgIGlmIChpZC5pbmNsdWRlcygndnVlMy1zZmMtbG9hZGVyJykpIHtcbiAgICAgICAgICAvLyAgICAgICByZXR1cm4gJ3Z1ZTMtc2ZjLWxvYWRlcic7XG4gICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaWQuaW5jbHVkZXMoJ3dhbmctZWRpdG9yJykpIHtcbiAgICAgICAgICAvLyAgICAgICByZXR1cm4gJ3dhbmctZWRpdG9yJztcbiAgICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpZC5pbmNsdWRlcygnanNvbi1lZGl0b3ItdnVlJykpIHtcbiAgICAgICAgICAvLyAgICAgICByZXR1cm4gJ2pzb24tZWRpdG9yLXZ1ZSc7XG4gICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaWQuaW5jbHVkZXMoJ0B3YW5nZWRpdG9yJykpIHtcbiAgICAgICAgICAvLyAgICAgICByZXR1cm4gJ3dhbmdlZGl0b3InO1xuICAgICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlkLmluY2x1ZGVzKCd4Z3BsYXllcicpKSB7XG4gICAgICAgICAgLy8gICAgICAgcmV0dXJuICd4Z3BsYXllcic7XG4gICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAvLyAgICAgcmV0dXJuICd2ZW5kb3InO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIC8vIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyAsXG4gICAgLy8gZXNidWlsZDoge1xuICAgIC8vICAgZHJvcDogY29uZmlnRW52LmNvbW1hbmQgPT09ICdidWlsZCcgPyBbJ2NvbnNvbGUnLCAnZGVidWdnZXInXSA6IFtdXG4gICAgLy8gfVxuICB9XG59KVxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJGOlxcXFx3d3dcXFxcdnVlLWFkbWluXFxcXHZpdGVcXFxccGx1Z2luc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRjpcXFxcd3d3XFxcXHZ1ZS1hZG1pblxcXFx2aXRlXFxcXHBsdWdpbnNcXFxcaW5kZXgudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Y6L3d3dy92dWUtYWRtaW4vdml0ZS9wbHVnaW5zL2luZGV4LnRzXCI7aW1wb3J0IHsgUGx1Z2luT3B0aW9uIH0gZnJvbSAndml0ZSdcclxuaW1wb3J0IHZ1ZSBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUnXHJcbmltcG9ydCB7IHNldHVwVW5wbHVnaW4gfSBmcm9tIFwiLi91bnBsdWdpblwiXHJcbmltcG9ydCBWdWVEZXZ0b29scyBmcm9tICd2aXRlLXBsdWdpbi12dWUtZGV2dG9vbHMnO1xyXG5pbXBvcnQgeyBzZXR1cFVub0NzcyB9IGZyb20gXCIuL3Vub2Nzc1wiXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVQbHVnaW5zKCl7XHJcbiAgICBjb25zdCBwbHVnaW5zOiBQbHVnaW5PcHRpb25bXSA9IFtcclxuICAgICAgICB2dWUoKSxcclxuICAgICAgICBWdWVEZXZ0b29scygpLFxyXG4gICAgICAgIHNldHVwVW5vQ3NzKCksXHJcbiAgICAgICAgLi4uc2V0dXBVbnBsdWdpbigpXHJcbiAgICBdO1xyXG4gICAgcmV0dXJuIHBsdWdpbnNcclxufSIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRjpcXFxcd3d3XFxcXHZ1ZS1hZG1pblxcXFx2aXRlXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkY6XFxcXHd3d1xcXFx2dWUtYWRtaW5cXFxcdml0ZVxcXFxwbHVnaW5zXFxcXHVucGx1Z2luLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9GOi93d3cvdnVlLWFkbWluL3ZpdGUvcGx1Z2lucy91bnBsdWdpbi50c1wiO2ltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5PcHRpb24gfSBmcm9tICd2aXRlJztcbmltcG9ydCBJY29ucyBmcm9tICd1bnBsdWdpbi1pY29ucy92aXRlJztcbmltcG9ydCBJY29uc1Jlc29sdmVyIGZyb20gJ3VucGx1Z2luLWljb25zL3Jlc29sdmVyJztcbmltcG9ydCBDb21wb25lbnRzIGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3ZpdGUnO1xuLy8gaW1wb3J0IHsgUHJpbWVWdWVSZXNvbHZlciB9IGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3Jlc29sdmVycyc7XG5pbXBvcnQgeyBGaWxlU3lzdGVtSWNvbkxvYWRlciB9IGZyb20gJ3VucGx1Z2luLWljb25zL2xvYWRlcnMnO1xuaW1wb3J0IHsgY3JlYXRlU3ZnSWNvbnNQbHVnaW4gfSBmcm9tICd2aXRlLXBsdWdpbi1zdmctaWNvbnMnO1xuaW1wb3J0IHsgUHJpbWVWdWVSZXNvbHZlciB9IGZyb20gJ0BwcmltZXZ1ZS9hdXRvLWltcG9ydC1yZXNvbHZlcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFVucGx1Z2luKCkge1xuICBjb25zdCBWSVRFX0lDT05fUFJFRklYPVwiaWNvblwiO1xuICBjb25zdCBWSVRFX0lDT05fTE9DQUxfUFJFRklYPVwibG9jYWwtaWNvblwiO1xuXG4gIGNvbnN0IGxvY2FsSWNvblBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ3NyYy9hc3NldHMvc3ZnLWljb24nKTtcblxuICAvKiogVGhlIG5hbWUgb2YgdGhlIGxvY2FsIGljb24gY29sbGVjdGlvbiAqL1xuICBjb25zdCBjb2xsZWN0aW9uTmFtZSA9IFZJVEVfSUNPTl9MT0NBTF9QUkVGSVgucmVwbGFjZShgJHtWSVRFX0lDT05fUFJFRklYfS1gLCAnJyk7XG5cbiAgY29uc3QgcGx1Z2luczogUGx1Z2luT3B0aW9uW10gPSBbXG4gICAgSWNvbnMoe1xuICAgICAgY29tcGlsZXI6ICd2dWUzJyxcbiAgICAgIGN1c3RvbUNvbGxlY3Rpb25zOiB7XG4gICAgICAgIFtjb2xsZWN0aW9uTmFtZV06IEZpbGVTeXN0ZW1JY29uTG9hZGVyKGxvY2FsSWNvblBhdGgsIHN2ZyA9PlxuICAgICAgICAgIHN2Zy5yZXBsYWNlKC9ePHN2Z1xccy8sICc8c3ZnIHdpZHRoPVwiMWVtXCIgaGVpZ2h0PVwiMWVtXCIgJylcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHNjYWxlOiAxLFxuICAgICAgZGVmYXVsdENsYXNzOiAnaW5saW5lLWJsb2NrJ1xuICAgIH0pLFxuICAgIENvbXBvbmVudHMoe1xuICAgICAgZHRzOiAnc3JjL3R5cGVzL2NvbXBvbmVudHMuZC50cycsXG4gICAgICBkaXJzOiBbJ3NyYy9jb21wb25lbnRzLyoqJ10sXG4gICAgICB0eXBlczogW3sgZnJvbTogJ3Z1ZS1yb3V0ZXInLCBuYW1lczogWydSb3V0ZXJMaW5rJywgJ1JvdXRlclZpZXcnXSB9XSxcbiAgICAgIHJlc29sdmVyczogW1xuICAgICAgICBQcmltZVZ1ZVJlc29sdmVyKHtcbiAgICAgICAgICBjb21wb25lbnRzOntcblxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIEljb25zUmVzb2x2ZXIoeyBjdXN0b21Db2xsZWN0aW9uczogW2NvbGxlY3Rpb25OYW1lXSwgcHJlZml4OiBWSVRFX0lDT05fUFJFRklYIH0pXG4gICAgICBdXG4gICAgfSksXG4gICAgY3JlYXRlU3ZnSWNvbnNQbHVnaW4oe1xuICAgICAgaWNvbkRpcnM6IFtsb2NhbEljb25QYXRoXSxcbiAgICAgIHN5bWJvbElkOiBgJHtWSVRFX0lDT05fTE9DQUxfUFJFRklYfS1bZGlyXS1bbmFtZV1gLFxuICAgICAgaW5qZWN0OiAnYm9keS1sYXN0JyxcbiAgICAgIGN1c3RvbURvbUlkOiAnX19TVkdfSUNPTl9MT0NBTF9fJ1xuICAgIH0pXG4gIF07XG5cbiAgcmV0dXJuIHBsdWdpbnM7XG59XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkY6XFxcXHd3d1xcXFx2dWUtYWRtaW5cXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJGOlxcXFx3d3dcXFxcdnVlLWFkbWluXFxcXHZpdGVcXFxccGx1Z2luc1xcXFx1bm9jc3MudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Y6L3d3dy92dWUtYWRtaW4vdml0ZS9wbHVnaW5zL3Vub2Nzcy50c1wiO2ltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHVub2NzcyBmcm9tICdAdW5vY3NzL3ZpdGUnO1xuaW1wb3J0IHByZXNldEljb25zIGZyb20gJ0B1bm9jc3MvcHJlc2V0LWljb25zJztcbmltcG9ydCB7IEZpbGVTeXN0ZW1JY29uTG9hZGVyIH0gZnJvbSAnQGljb25pZnkvdXRpbHMvbGliL2xvYWRlci9ub2RlLWxvYWRlcnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBVbm9Dc3MoKSB7XG4gIGNvbnN0IFZJVEVfSUNPTl9QUkVGSVg9XCJpY29uXCI7XG4gIGNvbnN0IFZJVEVfSUNPTl9MT0NBTF9QUkVGSVg9XCJsb2NhbC1pY29uXCI7XG5cbiAgY29uc3QgbG9jYWxJY29uUGF0aCA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnc3JjL2Fzc2V0cy9zdmctaWNvbicpO1xuXG4gIC8qKiBUaGUgbmFtZSBvZiB0aGUgbG9jYWwgaWNvbiBjb2xsZWN0aW9uICovXG4gIGNvbnN0IGNvbGxlY3Rpb25OYW1lID0gVklURV9JQ09OX0xPQ0FMX1BSRUZJWC5yZXBsYWNlKGAke1ZJVEVfSUNPTl9QUkVGSVh9LWAsICcnKTtcblxuICByZXR1cm4gdW5vY3NzKHtcbiAgICBwcmVzZXRzOiBbXG4gICAgICBwcmVzZXRJY29ucyh7XG4gICAgICAgIHByZWZpeDogYCR7VklURV9JQ09OX1BSRUZJWH0tYCxcbiAgICAgICAgc2NhbGU6IDEsXG4gICAgICAgIGV4dHJhUHJvcGVydGllczoge1xuICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snXG4gICAgICAgIH0sXG4gICAgICAgIGNvbGxlY3Rpb25zOiB7XG4gICAgICAgICAgW2NvbGxlY3Rpb25OYW1lXTogRmlsZVN5c3RlbUljb25Mb2FkZXIobG9jYWxJY29uUGF0aCwgKHN2ZzpzdHJpbmcpID0+XG4gICAgICAgICAgICBzdmcucmVwbGFjZSgvXjxzdmdcXHMvLCAnPHN2ZyB3aWR0aD1cIjFlbVwiIGhlaWdodD1cIjFlbVwiICcpXG4gICAgICAgICAgKVxuICAgICAgICB9LFxuICAgICAgICB3YXJuOiB0cnVlXG4gICAgICB9KVxuICAgIF1cbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQXdPLFNB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LHdDQUFlLENBQUM7QUFBQSxRQUNqRCxLQUFLLGNBQWMsSUFBSSxJQUFJLFNBQVMsd0NBQWUsQ0FBQztBQUFBLFFBQ3BELE9BQU8sY0FBYyxJQUFJLElBQUksMkJBQTJCLHdDQUFlLENBQUM7QUFBQSxRQUN4RSxLQUFLO0FBQUEsTUFDUDtBQUFBLElBQ0Y7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNILHFCQUFxQjtBQUFBLFFBQ25CLE1BQU07QUFBQSxVQUNKLGdCQUFnQjtBQUFBLFFBQ2xCO0FBQUEsTUFDRjtBQUFBLE1BQ0EsU0FBUTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BZVI7QUFBQSxJQUNGO0FBQUEsSUFDQSxTQUFTLGNBQWM7QUFBQSxJQUN2QixPQUFPO0FBQUEsTUFDTCxVQUFVO0FBQUEsTUFDVixzQkFBc0I7QUFBQSxNQUN0QixXQUFXO0FBQUEsTUFDWCxpQkFBaUI7QUFBQSxRQUNmLGdCQUFnQjtBQUFBLE1BQ2xCO0FBQUEsTUFDQSxlQUFlO0FBQUEsUUFDYixRQUFRO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQWlCUjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtGO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFsicHJvY2VzcyIsICJwYXRoIiwgIkZpbGVTeXN0ZW1JY29uTG9hZGVyIiwgInBhdGgiLCAicHJvY2VzcyIsICJGaWxlU3lzdGVtSWNvbkxvYWRlciJdCn0K
